/*
 * @lc app=leetcode.cn id=137 lang=cpp
 *
 * [137] 只出现一次的数字 II
 */

// @lc code=start
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
    int singleNumber(vector<int>& nums) {
        int ans[64] = {0};
        for(auto _n : nums)
        {
            int i = 0;
            unsigned int n = _n;
            while (n)
            {
                ans[i] += n & 1;
                // ans[i] %= 3;// 肯定不会越界，最大值不过是 nums.length()
                n >>= 1;
                i++;
            }
            
        }

        int res = 0;
        for(int i = 0; i < 64; i++)
        {
            if(ans[i] % 3)
            {
                res |= 1 << i;
            }
        }
        return res;
    }
};
// @lc code=end

